import OpenAI from 'openai'

// const model = 'deepseek-v3'

const model = 'deepseek/deepseek-r1-distill-qwen-32b'

const openai = new OpenAI({
  // 若没有配置环境变量，请用百炼API Key将下行替换为：apiKey: "sk-xxx",
  // apiKey: process.env.DASHSCOPE_API_KEY,

  // apiKey: 'sk-224e07555a0848fd821e2d7314a4c38f',
  // baseURL: 'https://dashscope.aliyuncs.com/compatible-mode/v1',

  // ds web
  // baseURL: 'http://127.0.0.1:8000/v1',
  // apiKey: 'EJ3NRODNPG3KkbVtjSHjz5QXHT/HdUaLbUvvYEwqXOIxKTwpOJwCPxx217TiXNCP',

  // baseURL: 'https://api.siliconflow.cn/v1',
  // apiKey: 'sk-xjdlmjxiqybobfaykkxwibzslbuycrphhvcsckieutcqhfcz',

  // 千问web
  // baseURL: 'http://127.0.0.1:8000/v1',
  // apiKey: 'Gzzg_8yn1gsBH1opRO0qadzXjCc$oyYJBfh_lX_FvLL2m0kLHzN4urbII8m9UruYoENz2Fxzfbmp0',

  baseURL: 'https://openrouter.ai/api/v1',
  apiKey: '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',
  defaultHeaders: {
    'HTTP-Referer': 'https://openrouter.ai/deepseek/deepseek-r1-distill-qwen-32b/api', // Optional. Site URL for rankings on openrouter.ai.
    'X-Title': 'DeepSeek: R1 Distill Qwen 32B', // Optional. Site title for rankings on openrouter.ai.
  },
})

export default class {
  async translateTexts(texts) {
    if (texts.length == 0) throw '翻译内容为空'

    const message = `
    你是一名专业的安全行业翻译人员，擅长将英文技术文档、安全报告、行业标准等内容准确翻译为中文。请将以下英文文本翻译为中文，确保术语准确、语言流畅，并符合安全行业的专业表达习惯。翻译时请注意上下文语境，避免直译导致的歧义或误解。

    请将翻译后的内容以 json 格式返回，放入 <json> 标签中，不要包含任何额外的解释或处理逻辑
    <json>
    [
      "翻译后的中文"
    ]
    </json>

    英文数组：
    ${JSON.stringify(texts)}
    `

    const completion = await openai.chat.completions.create({
      model,
      messages: [
        {
          // role: 'user',
          role: 'system',
          content: message,
        },
      ],
    })

    // console.log('思考过程：')
    // console.log(completion.choices[0].message.reasoning_content)
    // console.log('最终答案：')
    // console.log(completion.choices[0].message.content)
    let result
    try {
      console.log('大模型返回内容', completion.choices[0].message.content)

      // 提取<json></json>标签中的内容
      const match = completion.choices[0].message.content.match(/<json>(.*?)<\/json>/s)

      if (match) {
        result = JSON.parse(match[1])
      }

      // result = JSON.parse(completion.choices[0].message.content)
    } catch (e) {
      console.error(e, {
        content: completion.choices[0].message.content,
        texts,
      })
      throw e
    }

    return result
  }

  async translateFile(data) {
    const completion = await openai.chat.completions.create({
      messages: [
        {
          role: 'system',
          content: `你是一名专业的安全行业翻译人员，擅长将英文技术文档、安全报告、行业标准等内容准确翻译为中文。请将以下英文文本翻译为中文，确保术语准确、语言流畅，并符合安全行业的专业表达习惯。翻译时请注意上下文语境，避免直译导致的歧义或误解。
          请将翻译后的以 JSON 的形式输出，放入 <json> 标签中，不要包含任何额外的解释或处理逻辑
      <json>
      [
        "翻译后的中文"
      ]
      </json>`,
        },
        {
          role: 'user',
          content: JSON.stringify(data),
        },
      ],
      model,
    })

    let result
    try {
      console.log(completion.choices[0].message.content)

      // 提取<json></json>标签中的内容
      const match = completion.choices[0].message.content.match(/<json>(.*?)<\/json>/s)

      if (match) {
        result = JSON.parse(match[1])
      }

      // result = JSON.parse(completion.choices[0].message.content)
    } catch (e) {
      console.error(e, {
        content: completion.choices[0].message.content,
        texts,
      })
      throw e
    }

    return result
  }
}
